#!/bin/bash
#vi 脚本:
#1.set ff，查看文件格式，
#2.修改文件格式为 unix即可，底行模式下输入 set ff=unix
#执行的程序
# APP_NAME=springboot-quartz-0.0.1-SNAPSHOT.jar

# jar包数组
JARS=(picc-gateway.jar picc-server.jar picc-auth.jar picc-chat.jar)

#jar包或者程序所在的路径，可以写死，或者使用pwd命令获取。使用pwd命令要注意一定要加上``这个引号
APP_DIR=`pwd`

#使用说明，用来提示输入参数
usage() {
 echo "Usage: sh sms.sh [start:启动程序|stop:关闭程序|restart:重启程序|status:查看程序状态]"
 exit 1
}


#启动方法
start(){
 local JAR_NAME=

 for((i=0;i<${#JARS[@]};i++))
 do
  JAR_NAME=${JARS[$i]}

  #检查程序是否在运行
  #获取进程编号，并将进程编号赋值给pid变量
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在则启动jar包，存在则打印相关信息
  if [ -z "${pid}" ]; then
    #启动程序
	nohup java -jar $APP_DIR/$JAR_NAME > $APP_DIR/log.out 2>&1 &
	echo "$JAR_NAME  启动完成 start success"
	#输出进程编号
    echo "ps number is:pid = ${pid} ,APP_DIR=${APP_DIR}"
  else
    #打印已启动程序的信息
    echo "${JAR_NAME} is already running. pid=${pid} ."
  fi
 done
}


#停止方法，同样先调用is_exist方法看程序是否在运行，运行使用命令杀死进程，没有运行输出序没有在运行。
stop(){
 local JAR_NAME=
 for((i=0;i<${#JARS[@]};i++))
 do
  JAR_NAME=${JARS[$i]}

  #检查程序是否在运行
  #获取进程编号，并将进程编号赋值给pid变量
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在则启动jar包，存在则打印相关信息
  if [ -z "${pid}" ]; then
    #不存在 输出程序没有在运行
    echo "${JAR_NAME} is not running"
  else
    #存在 使用命令杀掉此程序的进程,pid在is_exist已经获取
    kill -9 $pid
  fi
 done
}

#输出运行状态
status(){

 local JAR_NAME=
 for((i=0;i<${#JARS[@]};i++))
 do
  JAR_NAME=${JARS[$i]}

  #检查程序是否在运行
  #获取进程编号，并将进程编号赋值给pid变量
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在则启动jar包，存在则打印相关信息
  if [ -z "${pid}" ]; then
    echo "${JAR_NAME} is NOT running."
  else
    echo "${JAR_NAME} is running. Pid is ${pid}"
  fi
 done
}

#重启
restart(){
 stop
 start
}
#输入方法：根据输入参数，选择执行对应方法，不输入则执行使用说明
#根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
 "start")
 start
 ;;
 "stop")
 stop
 ;;
 "status")
 status
 ;;
 "restart")
 restart
 ;;
 *)
 usage
 ;;
esac

